package cn.com.surker.material.entity;

import cn.com.surker.enums.material.MaterialType;
import cn.com.surker.util.StringUtils;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 材料信息表(材料名称,规格不能修改,仅新增)
 * </p>
 *
 * @author admin
 * @since 2023-07-12
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class MaterialInfo implements Serializable {

	private static final long serialVersionUID = 1L;

	@TableId(value = "id", type = IdType.AUTO)
	private Long id;

	/**
	 * 材料名称
	 */
	@NotBlank(message = "请输入材料名")
	private String name;

	@TableField(exist = false)
	private String fullName;

	public String getFullName() {
		String tName = name;
		if(StringUtils.isNotBlank(this.norms)){
			tName += "-(" + this.norms + ")";
		}
		if(StringUtils.isNotBlank(this.brand)){
			tName += "-(" + this.brand + ")";
		}
		return tName;
	}

	/**
	 * 材料编号
	 */
	private String code;

	/**
	 * 材料规格
	 */
	private String norms;

	/**
	 * 品牌
	 */
	private String brand;

	/**
	 * 材料单位,米,个,吨等
	 */
	private String unit;


	/**
	 * 辅材类型.0:主材;1:生产辅材;2:备品备件
	 */
	@NotNull(message = "请选择材料类型")
	private Integer type;

	/**
	 * 材料类型名称
	 */
	@TableField(exist = false)
	private String typeName;

	public String getTypeName(){
		if(this.type != null){
			MaterialType[] values = MaterialType.values();
			for (int i = 0,s = values.length;i < s;i++){
				MaterialType value = values[i];
				if(value.getCode().equals(this.type)){
					return value.getDescription();
				}
			}
			return null;
		}else {
			return null;
		}
	}
	/**
	 * 检测方式,0:不检测;1:抽检:2全检
	 * 保留,暂时不用
	 */
	private Integer checkType;

	/**
	 * 排序
	 */
	private Integer sort;

	/**
	 * 状态(0:启用1:禁用)
	 */
	private Integer status;

	/**
	 * 材料价值类型(0：消耗品，1：办公资产)
	 */
	private Integer attrType;
	/**
	 * PC材料类目
	 */
	private Integer pcType;

	/**
	 * 创建时间
	 */
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@TableField(fill = FieldFill.INSERT,update="now()")
	private Date createTime;

	/**
	 * 创建人员
	 */
	private Long creater;

	/**
	 * 修改时间
	 */
	@TableField(fill = FieldFill.UPDATE,update="now()")
	private Date updateTime;

	/**
	 * 修改人员
	 */
	private Long updater;

	/**
	 * 备注
	 */
	private String remarks;


}
